package com.yk.ykmessagesdk.utils;

import android.content.Context;
import android.content.SharedPreferences;

public class SPUtils {

    private static final String PREF_NAME = "AppPreferences";
    private static SharedPreferences sharedPreferences;
    private static SharedPreferences.Editor editor;

    public static final String KEY_IMEI = "key_imei";
    public static final String KEY_PHONE_NUMBER = "key_phone_number";


    /**
     * 初始化SharedPreferences
     *
     * @param context 应用程序上下文
     */
    public static void init(Context context) {
        sharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
        editor = sharedPreferences.edit();
    }

    /**
     * 保存String类型的数据
     *
     * @param key   键
     * @param value 值
     */
    public static void putString(String key, String value) {
        editor.putString(key, value);
        editor.apply(); // 提交更改
    }

    /**
     * 保存Integer类型的数据
     *
     * @param key   键
     * @param value 值
     */
    public static void putInt(String key, int value) {
        editor.putInt(key, value);
        editor.apply(); // 提交更改
    }

    /**
     * 保存Long类型的数据
     *
     * @param key   键
     * @param value 值
     */
    public static void putLong(String key, long value) {
        editor.putLong(key, value);
        editor.apply(); // 提交更改
    }

    /**
     * 保存Float类型的数据
     *
     * @param key   键
     * @param value 值
     */
    public static void putFloat(String key, float value) {
        editor.putFloat(key, value);
        editor.apply(); // 提交更改
    }

    /**
     * 保存Boolean类型的数据
     *
     * @param key   键
     * @param value 值
     */
    public static void putBoolean(String key, boolean value) {
        editor.putBoolean(key, value);
        editor.apply(); // 提交更改
    }

    /**
     * 获取String类型的数据
     *
     * @param key          键
     * @param defaultValue 默认值
     * @return 存储的字符串值
     */
    public static String getString(String key, String defaultValue) {
        return sharedPreferences.getString(key, defaultValue);
    }

    /**
     * 获取Integer类型的数据
     *
     * @param key          键
     * @param defaultValue 默认值
     * @return 存储的整数值
     */
    public static int getInt(String key, int defaultValue) {
        return sharedPreferences.getInt(key, defaultValue);
    }

    /**
     * 获取Long类型的数据
     *
     * @param key          键
     * @param defaultValue 默认值
     * @return 存储的长整数值
     */
    public static long getLong(String key, long defaultValue) {
        return sharedPreferences.getLong(key, defaultValue);
    }

    /**
     * 获取Float类型的数据
     *
     * @param key          键
     * @param defaultValue 默认值
     * @return 存储的浮点值
     */
    public static float getFloat(String key, float defaultValue) {
        return sharedPreferences.getFloat(key, defaultValue);
    }

    /**
     * 获取Boolean类型的数据
     *
     * @param key          键
     * @param defaultValue 默认值
     * @return 存储的布尔值
     */
    public static boolean getBoolean(String key, boolean defaultValue) {
        return sharedPreferences.getBoolean(key, defaultValue);
    }

    /**
     * 删除指定键的数据
     *
     * @param key 键
     */
    public static void remove(String key) {
        editor.remove(key);
        editor.apply(); // 提交更改
    }

    /**
     * 清空所有数据
     */
    public static void clear() {
        editor.clear();
        editor.apply(); // 提交更改
    }
}